package com.example.archive.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.archive.entity.Archive;
import com.example.archive.util.Result;
import com.example.archive.util.PageParam;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;

public interface ArchiveService extends IService<Archive> {
    Result<Boolean> addArchive(Archive archive);
    Result<Boolean> updateArchive(Archive archive);
    Result<Boolean> deleteArchive(Integer archiveId);
    Result<IPage<Archive>> listArchives(PageParam pageParam, Integer userId);
    
    /**
     * 获取个人档案列表
     * 根据用户ID获取该用户创建或有权限访问的档案
     * 
     * @param pageParam 分页参数
     * @param userId 用户ID
     * @return 个人档案列表
     */
    Result<IPage<Archive>> listPersonalArchives(PageParam pageParam, Integer userId);
    
    /**
     * 检查用户是否有权限访问指定档案
     * 根据用户角色和档案密级进行权限验证
     * 
     * @param userId 用户ID
     * @param archive 档案对象
     * @return 是否有权限访问
     */
    boolean canUserAccessArchive(Integer userId, Archive archive);
} 